import java.util.HashMap;
import java.util.Map;
import java.util.Set;

class Jogador {
    private static int _id = 0;
    private int id;
    private String nome;
    private Map<Territorio, Integer> exercitos;
    
    Jogador(String nome) {
        this.id = ++Jogador._id;
        this.nome = nome;
        this.exercitos = new HashMap<Territorio, Integer>();
    }
    
    public Jogador conquistar(Territorio territorio, int exercitos) {
        this.exercitos.put(territorio, exercitos);
        return this;
    }
    
    public Jogador perder(Territorio territorio) {
        this.exercitos.remove(territorio);
        return this;
    }
    
    public Jogador adicionar(Territorio territorio, int exercitos) {
        int exercitosAtuais = this.exercitos.get(territorio);
        this.exercitos.put(territorio, exercitosAtuais + exercitos);
        return this;
    }
    
    public void remover(Territorio territorio, int exercitos) {
        int exercitosAtuais = this.exercitos.get(territorio);
        this.exercitos.put(territorio, exercitosAtuais - exercitos);
    }
    
    public String getNome() {
        return this.nome;
    }
    
    public Map<Territorio, Integer> getExercitos() {
        return this.exercitos;
    }
    
    public Set<Territorio> getTerritorios() {
        return this.exercitos.keySet();
    }
    
    public String toString() {
        return "<ID: " + this.id + ", Nome: " + this.nome + "\n" + this.exercitos.toString() + ">";
    }
}